Python for循环不但可以遍历序列,还可以遍历字典。
通过 for 循环遍历字典
先定义一个字典
1 2 3 4 5 6 7 8 9
| In [4]: dic = {'a':1, 'b':2} In [5]: dic.fromkeys('abcde',100) Out[5]: {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100} In [6]: dic1 = dic.fromkeys('abcde',100) In [7]: dic1 Out[7]: {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100}
|
遍历字典里的 key (直接遍历字典,不加任何方法就是遍历字典的 key)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| In [8]: for k in dic: ...: print k ...: a b In [9]: for k in dic1: ...: print k ...: a c b e d
|
取字典里的值(要遍历 value 就要加上 dic1[k] 索引下标来取)
1 2 3 4 5 6 7 8
| In [10]: for k in dic1: ...: print k,dic1[k] ...: a 100 c 100 b 100 e 100 d 100
|
格式化的输出
1 2 3 4 5 6 7 8
| In [11]: for k in dic1: ...: print "%s --> %s" % (k,dic1[k]) ...: a --> 100 c --> 100 b --> 100 e --> 100 d --> 100
|
如果只要占一行就在后边加逗号
1 2 3 4
| In [12]: for k in dic1: ...: print "%s --> %s" % (k,dic1[k]), ...: a --> 100 c --> 100 b --> 100 e --> 100 d --> 100
|
还可以把字典作为列表遍历,取到每个元素也就是元组(使用 items() 遍历,通过一个值取出来就是元组)
1 2 3 4 5 6 7 8 9
| In [13]: dic1.items() Out[13]: [('a', 100), ('c', 100), ('b', 100), ('e', 100), ('d', 100)] In [14]: for i in dic1.items():print i ('a', 100) ('c', 100) ('b', 100) ('e', 100) ('d', 100)
|
然后可以对元组进行拆分(使用 items(),通过两个值来取就可以拆分元组)
1 2 3 4 5 6
| In [15]: for k,v in dic1.items():print k,v a 100 c 100 b 100 e 100 d 100
|
也可以用 dic1.iteritems() ,只不过它返回是个对象;而 items() 是个列表。可以对这个对象进行遍历,用两个值(k和v)来接收,就可以得到两个值 key 和 value
1 2 3 4 5 6
| In [16]: for k,v in dic1.iteritems():print k,v a 100 c 100 b 100 e 100 d 100
|
以上就是通过 for 循环遍历字典的方法
实例
实例1:乘法口诀表
两个循环
1 2 3 4 5 6
| for i in xrange(1,10): for j in xrange(1,i+1): print "%s * %s = %s" % (j, i j*i), print
|
输出结果
1 2 3 4 5 6 7 8 9 10
| [root@localhost ~] 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
|